package com.xbongbong.pro.statistic.service;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.datawarning.pojo.dto.DataWarningMessageAddDTO;
import com.xbongbong.pro.statistic.pojo.dto.DataWarningBatchDTO;
import com.xbongbong.pro.statistic.pojo.dto.DataWarningDelDTO;
import com.xbongbong.pro.statistic.pojo.dto.DataWarningDetailsDTO;
import com.xbongbong.pro.statistic.pojo.dto.DataWarningEnableDTO;
import com.xbongbong.pro.statistic.pojo.dto.DataWarningGetDTO;
import com.xbongbong.pro.statistic.pojo.dto.DataWarningIndexDTO;
import com.xbongbong.pro.statistic.pojo.dto.DataWarningIndexListDTO;
import com.xbongbong.pro.statistic.pojo.dto.DataWarningListDTO;
import com.xbongbong.pro.statistic.pojo.dto.DataWarningListInChartDTO;
import com.xbongbong.pro.statistic.pojo.dto.DataWarningQueryDTO;
import com.xbongbong.pro.statistic.pojo.dto.DataWarningRemindDTO;
import com.xbongbong.pro.statistic.pojo.dto.DataWarningSaveDTO;
import com.xbongbong.pro.statistic.pojo.dto.DwExecutedRemindDTO;
import com.xbongbong.pro.statistic.pojo.vo.DataWarningDelVO;
import com.xbongbong.pro.statistic.pojo.vo.DataWarningEnableVO;
import com.xbongbong.pro.statistic.pojo.vo.DataWarningGetVO;
import com.xbongbong.pro.statistic.pojo.vo.DataWarningIndexListVO;
import com.xbongbong.pro.statistic.pojo.vo.DataWarningIndexVO;
import com.xbongbong.pro.statistic.pojo.vo.DataWarningListInChartVO;
import com.xbongbong.pro.statistic.pojo.vo.DataWarningListVO;
import com.xbongbong.pro.statistic.pojo.vo.DataWarningQueryListVO;
import com.xbongbong.pro.statistic.pojo.vo.DataWarningRemindVO;
import com.xbongbong.pro.statistic.pojo.vo.DataWarningSaveVO;
import com.xbongbong.pro.statistic.pojo.vo.DwExecutedRemindVO;
import com.xbongbong.pro.statistic.pojo.vo.DwHistoryListVO;

import java.util.List;

/**
 * @ClassName DataWarningService
 * @Description 数据预警
 * @Author mengna.Deng
 * @Date 2021/4/15 19:47
 * @Version 1.0
 */
public interface DataWarningService {
    /**
     * 图表中心获取数据预警列表
     * @param listDTO
     * @return
     * @throws XbbException
     */
    DataWarningListInChartVO list4Chart(DataWarningListInChartDTO listDTO) throws XbbException;
    /**
     * 新建或编辑时获取预警设置
     * @param getDTO
     * @return
     * @throws XbbException
     */
    DataWarningGetVO addOrUpdateGet(DataWarningGetDTO getDTO) throws XbbException;

    /**
     * 保存设置
     * @param saveDTO
     * @return
     * @throws XbbException
     */
    DataWarningSaveVO save(DataWarningSaveDTO saveDTO) throws XbbException;

    /**
     * 启用/关闭数据预警
     * @param enableDTO
     * @return
     * @throws XbbException
     */
    DataWarningEnableVO enable(DataWarningEnableDTO enableDTO) throws XbbException;

    /**
     * 删除数据预警
     * @param smartSettingsDelDTO
     * @return
     * @throws XbbException
     */
    DataWarningDelVO delete(DataWarningDelDTO smartSettingsDelDTO) throws XbbException;

    /**
     * 批量保存设置
     * @param batchDTO
     * @throws XbbException
     */
    void batchAddOrUpdate(DataWarningBatchDTO batchDTO) throws XbbException;

    /**
     * 数据预警历史批量失效
     * @param corpid
     * @param invalidList
     * @throws XbbException
     */
    void invalidBatch(String corpid, List<Long> invalidList) throws XbbException ;

    /**
     * 根据图表id查询对应的预警list
     * @param queryDTO
     * @return
     */
    DataWarningQueryListVO queryByChartId(DataWarningQueryDTO queryDTO) throws XbbException;

    /**
     * 数据中心数据预警列表查询
     * @param dataWarningListDTO
     * @return
     * @throws XbbException
     */
    DataWarningListVO list(DataWarningListDTO dataWarningListDTO) throws XbbException;

    /**
     * 查看预警明细
     * @param dataWarningDetailsDTO
     * @return
     * @throws XbbException
     */
    DwHistoryListVO warningDetails(DataWarningDetailsDTO dataWarningDetailsDTO) throws XbbException;

    /**
     * 首页卡片获取数据预警
     * @param indexDTO
     * @return
     * @throws XbbException
     */
    DataWarningIndexVO get(DataWarningIndexDTO indexDTO) throws XbbException;

    /**
     * 首页卡片 查看全部
     * @param indexListDTO
     * @return
     * @throws XbbException
     */
    DataWarningIndexListVO list(DataWarningIndexListDTO indexListDTO)throws XbbException;

    /**
     * 今日可执行预警是否已达到上线（图表中心提醒）
     * @param dataWarningRemindDTO
     * @return
     */
    DataWarningRemindVO remind(DataWarningRemindDTO dataWarningRemindDTO) throws XbbException;

    /**
     * 今日可执行预警次数/总次数（数据中心提醒）
     * @param remindDTO
     * @return
     */
    DwExecutedRemindVO executedRemind(DwExecutedRemindDTO remindDTO) throws XbbException;


    /**
     * 数据预警消息添加
     * @param dataWarningMessageAddDTO
     */
    void dwMessageAdd(DataWarningMessageAddDTO dataWarningMessageAddDTO);

}
